Kandungan Katedral dan Bazar (buku)

Esei membezakan dua model pembangunan bagi perisian percuma:

  • Model Cathedral: kod sumber terdapat bagi setiap pengeluaran perisian, tetapi kod antara setiap pengeluaran hanya terdapat ekslusif kepada kumpulan pembangun perisian. Contoh yang diberikan Raymond termasuk GNU Emacs dan GCC.
  • Model Bazaar: kod dibina melalui Internet dan dapat dilihat oleh orang awam. Raymond mengiktiraf Linus Torvalds, ketua projek inti Linux sebagai pelopor model ini. Raymond juga memuatkan pengalamannya dengan pembangunan projek Fetchmail dalam model ini.

Tesis utama esei ialah saranan Raymond bahawa "sekiranya terdapat banyak mata yang memandang, kesemua pepijat komputer menjadi cetek" (yang digelarnya Linus' Law (Hukum Linus)): Lagi meluas penyebaran sesuatu kod sumber bagi tujuan ujian, pemeriksaan dan uji kaji, maka lebih pantaslah pepijat diketemu. Sebaliknya Raymond mendakwa banyak diperlukan untuk mencari pepijat dalam model Katedral oleh sebab kod hanya terdapat pada sebilngan kecil pembangun perisian.

Garis panduan perekaan perisian sumber terbuka yang baik

Terdapat 19 hujah bagaimana menghasilkan perisian sumber terbukan yang baik dalam buku:[2]:

  1. Setiap perisian yang baik tercetus daripada niat peribadi seseorang pembangun.
  2. Pengatur cara mahir tahun bagaimana mahu menulis kod. Pengatur cara hebat tahu bagaimana menulis kembali kod (dan mengguna semula kod).
  3. Rancang untuk membuang satu versi; anda akan melakukannya tak kira apapun. (Ditiru daripada The Mythical Man Month karya Frederick Brooks)
  4. Sekiranya anda memiliki sikap bersesuaian, masalah menarik akan mencari anda.
  5. Apabila anda hilang minat dalam sesuatu program, tugas terakhir anda kepadanya ialah menyerahkannya kepada pengganti yang berkebolehan.
  6. Anggap pengguna sebagai rakan pembangun. Ini akan membawa kepada pembaikan kod dengan cepat dan menjadikan proses nyahpepijat lebih berkesan.
  7. Keluarkan kod awal, dan keluarkannya dengan kerap. Dan dengar apa yang dikatakan pelanggan anda.
  8. Sekiranya terdapat kumpulan penguji beta dan rakan pembangun yang mencukupi, hampir semua masalah akan dapat dicam dan cara penyelesaian akan dapat dilihat oleh seorang daripada mereka.
  9. Struktur data pintar dan kod dungu lebih baik daripada sebaliknya.
  10. Jika anda melayan penguji beta anda sebagai sumber terpenting anda, mereka akan mebalas dengan menjadi sumber terpenting anda.
  11. Perkara yang terbaik selepas memiliki idea-idea baik ialah mengenal idea-idea baik daripada pengguna anda. Kadang kala perkara kedua itu lebih baik.
  12. Kerap berlaku yang penyelesaian yang inovatif dan ketara timbul daripada kesedaran anda bahawa konsep anda tentang sesuatu masalah itu sebenarnya silap.
  13. Kesempurnaan (dalam reka bentuk) tercapai bukan kerana sudah tiada apa lagi yang perlu ditambah, akan tetapi oleh sebab tiada lagi yang perlu dibuang. (Disandarkan kepada Antoine de Saint-Exupery).
  14. Apa jua perkakas seharusya menjadi berguna dalam cara yang disangka, akan tetapi perkakas yang hebat akan melakukan perkara tambahan yang tidak anda sangka.
  15. Apabila menulis apa jua perisian get laluan, pastikan aliran data tidak banyak terganggu—dan jangan sekali-kali membuang maklumat melainkan dipaksa oleh penerima!
  16. Sekiranya bahasa pengaturcaraan anda tidak sehebat perisian lengkap Turing, "gula sintaks" [3] boleh menjadi rakan anda.
  17. Sistem keselamatan hanya selamat sejauh mana rahsianya selamat. Awas akan rahsia pseudo.
  18. Bagi menyelesaikan masalah yang menarik, bermulalah dengan mencari masalah yang menarik kepada anda.
  19. Dengan syarat penyelaras pembangunan perisian memiliki bahantara yang setanding Internet, dan mengetahui bagaimana memimpin tanpa memaksa, banyak kepala lebih baik daripada satu.